home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / include / incl98.zoo / st-out.h < prev    next >
C/C++ Source or Header  |  1993-07-10  |  3KB  |  85 lines

  1. /*    atst.out.h    .1    24Dec85    */
  2. /*
  3.  * Header prepended to each Atari ST .prg file
  4.  */
  5. #ifndef _STAOUT_H
  6. #define _STAOUT_H
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. struct aexec {
  13.      short    a_magic;    /* magic number */
  14. unsigned long    a_text;        /* size of text segment */
  15. unsigned long    a_data;        /* size of initialized data */
  16. unsigned long    a_bss;        /* size of uninitialized data */
  17. unsigned long    a_syms;        /* size of symbol table */
  18. unsigned long    a_AZero1;    /* always zero */
  19. unsigned long    a_ldflgs;    /* program load flags */
  20. #define a_AZero2 a_ldflgs    /* compatibility */
  21. unsigned short    a_isreloc;    /* is reloc info present */
  22. };
  23.  
  24. /*
  25.  * ldflgs - stolen from MiNT mem.h
  26.  */
  27.  
  28. #define F_FASTLOAD    0x01    /* don't clear heap */
  29. #define F_ALTLOAD    0x02    /* OK to load in alternate RAM */
  30. #define F_ALTALLOC    0x04    /* OK to malloc from alt. RAM */
  31. #define F_RESERVED    0x08    /* reserved for future use */
  32. #define F_MEMFLAGS    0xf0    /* reserved for future use */
  33. #define F_SHTEXT    0x800    /* program's text may be shared */
  34.  
  35. #define BASE_OFFSET    (-32768)
  36.  
  37. #define    CMAGIC    0x601A        /* contiguous text */
  38. #define    ISRELOCINFO    0    /* relocation information is present */
  39.                 /*  any other value - no reloc info  */
  40. /*
  41.  * Macros which take exec structures as arguments and tell whether
  42.  * the file has a reasonable magic number or offsets to text|symbols|strings.
  43.  */
  44. #define    A_BADMAG(x)     (((x).a_magic)!=CMAGIC)
  45. /* this is busted...
  46. #define    A_TXTOFF(x)    ((x).a_magic==ZMAGIC ? 1024 : sizeof (struct exec))
  47. */
  48. #define    A_TXTOFF(x)    (sizeof (struct aexec))
  49. #define A_DATOFF(x)    (A_TXTOFF(x) + (x).a_text)
  50. #define A_SYMOFF(x)    (A_TXTOFF(x) + (x).a_text+(x).a_data)
  51. #define    A_STROFF(x)    (A_SYMOFF(x) + (x).a_syms)
  52.  
  53. /*
  54.  * Format of a symbol table entry
  55.  */
  56. struct    asym 
  57.     {
  58.     char        a_name[8];    /* symbol name */
  59.     unsigned short    a_type;        /* type flag, i.e. N_TEXT etc; see below */
  60.     unsigned long    a_value;    /* value of this symbol (or sdb offset) */
  61.     };
  62.  
  63. /*
  64.  * Simple values for a_type.
  65.  */
  66. #define A_UNDF    0        /* ?? for gas */
  67. #define    A_BSS    0x0100        /* bss */
  68. #define    A_TEXT    0x0200        /* text */
  69. #define    A_DATA    0x0400        /* data */
  70. #define    A_EXT    0x0800        /* external */
  71. #define A_EQREG    0x1000        /* equated register */
  72. #define A_GLOBL    0x2000        /* global */
  73. #define A_EQU    0x4000        /* equated */
  74. #define A_DEF    0x8000        /* defined */
  75. #define A_LNAM  0x0048        /* gst compat long name */
  76.                                 /* file symbols ala aln */
  77. #define A_TFILE 0x0280          /* text file corresponding to object module */
  78. #define A_TFARC 0x02C0          /* text file archive */
  79.  
  80. #ifdef __cplusplus
  81. }
  82. #endif
  83.  
  84. #endif /* _STAOUT_H */
  85.